tmem: printk too chatty when tmem enabled
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 23 Nov 2009 06:46:58 +0000 (06:46 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 23 Nov 2009 06:46:58 +0000 (06:46 +0000)
Two gdprintk's that are rarely encountered with tmem disabled
are frequent but meaningless when tmem is enabled.  Printing
these tens-to-hundreds of times per second (in certain
circumstances even higher) slows down domain execution.

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
xen/common/memory.c
xen/common/page_alloc.c
xen/include/xen/tmem.h

index 6627c626f2453f2d23fbf6165a599a43dbc43f4c..11ccdf2fcdb8947bd37fea479667044a800d594d 100644 (file)
@@ -19,6 +19,7 @@
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
 #include <xen/errno.h>
+#include <xen/tmem.h>
 #include <asm/current.h>
 #include <asm/hardirq.h>
 #include <xen/numa.h>
@@ -120,10 +121,11 @@ static void populate_physmap(struct memop_args *a)
             page = alloc_domheap_pages(d, a->extent_order, a->memflags);
             if ( unlikely(page == NULL) ) 
             {
-                gdprintk(XENLOG_INFO, "Could not allocate order=%d extent: "
-                         "id=%d memflags=%x (%ld of %d)\n",
-                         a->extent_order, d->domain_id, a->memflags,
-                         i, a->nr_extents);
+                if ( !opt_tmem || (a->extent_order != 0) )
+                    gdprintk(XENLOG_INFO, "Could not allocate order=%d extent:"
+                             " id=%d memflags=%x (%ld of %d)\n",
+                             a->extent_order, d->domain_id, a->memflags,
+                             i, a->nr_extents);
                 goto out;
             }
 
index 7d19bb24e799f40b9da141b7013eba2cc8e15b27..c9392a6655848c50c0945c19d56b60aa82beaaf4 100644 (file)
@@ -1049,8 +1049,10 @@ int assign_pages(
     {
         if ( unlikely((d->tot_pages + (1 << order)) > d->max_pages) )
         {
-            gdprintk(XENLOG_INFO, "Over-allocation for domain %u: %u > %u\n",
-                    d->domain_id, d->tot_pages + (1 << order), d->max_pages);
+            if ( !opt_tmem || order != 0 || d->tot_pages != d->max_pages )
+                gdprintk(XENLOG_INFO, "Over-allocation for domain %u: "
+                         "%u > %u\n", d->domain_id,
+                         d->tot_pages + (1 << order), d->max_pages);
             goto fail;
         }
 
index ff009b6cf09f7afe67840602a91b20b4da0ef405..1a9b772a6979eb7da3873aca3318725b17858f20 100644 (file)
@@ -12,5 +12,6 @@
 extern void init_tmem(void);
 extern void tmem_destroy(void *);
 extern void *tmem_relinquish_pages(unsigned int, unsigned int);
+extern int  opt_tmem;
 
 #endif /* __XEN_TMEM_H__ */